package com.tfswue.lhj.constant;

/**
 * 系统常量类
 * 
 * @author daygods
 * @since 2025-07-08
 */
public class Constants {
    
    /**
     * 用户状态常量
     */
    public static class UserStatus {
        /** 禁用 */
        public static final Integer DISABLED = 0;
        /** 正常 */
        public static final Integer NORMAL = 1;
        /** 锁定 */
        public static final Integer LOCKED = 2;
    }
    
    /**
     * 缓存键常量
     */
    public static class CacheKey {
        /** 用户缓存前缀 */
        public static final String USER_PREFIX = "user:";
        /** 用户信息缓存 */
        public static final String USER_INFO = USER_PREFIX + "info:";
        /** 用户权限缓存 */
        public static final String USER_PERMISSION = USER_PREFIX + "permission:";
        /** 验证码缓存 */
        public static final String CAPTCHA = "captcha:";
        /** 短信验证码缓存 */
        public static final String SMS_CODE = "sms:code:";
    }
    
    /**
     * 缓存过期时间常量（秒）
     */
    public static class CacheExpire {
        /** 用户信息缓存过期时间 30分钟 */
        public static final long USER_INFO = 30 * 60;
        /** 用户权限缓存过期时间 1小时 */
        public static final long USER_PERMISSION = 60 * 60;
        /** 验证码过期时间 5分钟 */
        public static final long CAPTCHA = 5 * 60;
        /** 短信验证码过期时间 10分钟 */
        public static final long SMS_CODE = 10 * 60;
    }
    
    /**
     * HTTP状态码常量
     */
    public static class HttpStatus {
        /** 成功 */
        public static final int SUCCESS = 200;
        /** 参数错误 */
        public static final int BAD_REQUEST = 400;
        /** 未授权 */
        public static final int UNAUTHORIZED = 401;
        /** 禁止访问 */
        public static final int FORBIDDEN = 403;
        /** 资源未找到 */
        public static final int NOT_FOUND = 404;
        /** 服务器内部错误 */
        public static final int INTERNAL_SERVER_ERROR = 500;
    }
    
    /**
     * 分页常量
     */
    public static class Page {
        /** 默认页码 */
        public static final int DEFAULT_CURRENT = 1;
        /** 默认每页大小 */
        public static final int DEFAULT_SIZE = 10;
        /** 最大每页大小 */
        public static final int MAX_SIZE = 100;
    }
    
    /**
     * 字符串常量
     */
    public static class Str {
        /** 空字符串 */
        public static final String EMPTY = "";
        /** 逗号分隔符 */
        public static final String COMMA = ",";
        /** 点分隔符 */
        public static final String DOT = ".";
        /** 下划线分隔符 */
        public static final String UNDERSCORE = "_";
        /** 横线分隔符 */
        public static final String DASH = "-";
        /** 斜杠分隔符 */
        public static final String SLASH = "/";
        /** 反斜杠分隔符 */
        public static final String BACKSLASH = "\\";
    }
    
    /**
     * 正则表达式常量
     */
    public static class Regex {
        /** 手机号正则 */
        public static final String PHONE = "^1[3-9]\\d{9}$";
        /** 邮箱正则 */
        public static final String EMAIL = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
        /** 身份证号正则 */
        public static final String ID_CARD = "^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
        /** 用户名正则（字母、数字、下划线，3-20位） */
        public static final String USERNAME = "^[a-zA-Z0-9_]{3,20}$";
        /** 密码正则（至少包含字母和数字，6-20位） */
        public static final String PASSWORD = "^(?=.*[a-zA-Z])(?=.*\\d)[a-zA-Z\\d@$!%*?&]{6,20}$";
    }
    
    /**
     * 日期格式常量
     */
    public static class DateFormat {
        /** 标准日期时间格式 */
        public static final String DATETIME = "yyyy-MM-dd HH:mm:ss";
        /** 日期格式 */
        public static final String DATE = "yyyy-MM-dd";
        /** 时间格式 */
        public static final String TIME = "HH:mm:ss";
        /** 紧凑日期时间格式 */
        public static final String COMPACT_DATETIME = "yyyyMMddHHmmss";
        /** 紧凑日期格式 */
        public static final String COMPACT_DATE = "yyyyMMdd";
    }
}